Continued advances in computer technology have lead to an explosion in the use of multimedia applications. Computer based multimedia, the combination of video and audio in a digital format for viewing on a computer, involves a multitude of electronic circuits and subsystems. It is estimated that more than 100 million computers are now equipped with multimedia hardware and software. Nearly every new personal computer manufactured today includes some form of multimedia. Furthermore, digital products having some form of multimedia, such as cameras and video recorders, are now hitting the market in a dizzying succession. Multimedia has not only turned the computer into an indispensable information, education, and entertainment tool, but it has also revolutionized the way society works, entertains, and stays informed. Multimedia has also helped drive the computer industry to provide tools that can be used by novice computer users making computers nearly as prevalent as radios and televisions.
Multimedia is also becoming increasingly prevalent in the Internet realm as the growth of the Internet steadily and rapidly continues. A technique known as streaming has been developed for multimedia applications that allows data to be transferred so that it can be processed as a steady and continuous stream. This has the benefit that data can be displayed before the entire file has been transmitted, a must for large multimedia files. Streaming technologies are becoming increasingly important with the growth of the Internet because most users do not have fast enough Internet access to download large multimedia files quickly.
Streaming data almost always requires some form of processing among various modules or filters in a system. Compression and decompression of audio and video data as well as the use of software to create special effects on that data are typical of the types of processing applied to streaming data. For example, a video clip might require MPEG decoding in a dedicated hardware module, rasterizing the video fields in another hardware module, digital filtering of the audio in a software module, insertion of subtitles by another software module, parsing audio data to skip silent periods by a software module, D/A conversion of the video in a video adapter card, and D/A conversion of the audio in a separate audio card.
As these technologies were developed to process streaming data, the concept of a graph was introduced for specifying the connections among the modules through which a data stream must pass in an effort to increase the data processing speed. FIG. 4 is representative of the graph concept. In these graphs, an application 36 communicates with a graph manager 400 to indicate what the application wants done. The graph manager selects which filter modules 402, 404, 406 to use and the modules 402, 404, 406 within the graph negotiate directly with each other. Protocols have been developed to specify the flow of data through a graph, and to specify the control protocol that adjacent modules in the graph use to communicate with each other to request and accept the data. During connection of modules in a graph, these protocols define a predefined fixed sequence of data flow 408 and control connection negotiations 410 in a graph. A typical negotiation sequence negotiates the following in order: the interface, the medium, the data format, the allocators, and the master clock.
These implementations have several limitations. One limitation in these systems is that an application is forced to use a graph manager to select which modules to use and is not allowed to select the medium, the format to use, the allocators, the threads, etc. Another limitation is that the modules used for encoding and decoding use essentially different streaming processes and have different interfaces for audio and video and for compression and decompression.
Accordingly, there exists a continued need for further efficiencies in processing streaming and related types of data by providing control mechanisms that achieve the efficiency of a dedicated protocol while allowing enough flexibility to use different data types, different modules, and different configurations in the environment of streaming data through multiple processing modules.